import pages from './pages';
import { deepCopy } from '@/lib/tools';
import PREFIX from './prefix.js';
/**
 * 路由字段解析
 * name {String}: 路由名称，驼峰命名，首字母小写。在跟pages.js中的组件名匹配时，自动转换成首字母大写
 * path {String}: 路由访问路径
 * component {String}: 组件名，不写默认匹配pages.js中的组件名；写了使用指定的组件名
 * parent {String}: 指定父级是哪个，面包屑里有用到
 * title {String}: 面包屑上显示的名称
 * meta: {
 *      fullScreen: true 是否全屏，表示去掉侧边栏、header
 * }
 */
const options = [
    {
        name: 'login',
        path: '/login',
        title: '登录',
        meta: {
            fullScreen: true
        }
    },
    {
        name: 'welcome',
        path: '/welcome',
        title: '首页',
        meta: {}
    },
    {
        name: 'about',
        path: '/about',
        title: '关于我们',
        meta: {}
    },
    {
        path: '/:pathMatch(.*)', // 访问主页的时候 重定向到index页面
		redirect: PREFIX + '/404'
	},
    {
        name: '404',
        path: '/404',
        tile: '错误页面',
        meta: {
            fullScreen: true
        }
    },
    {
        name: 'centerUserManage',
        path: '/center/user/manage',
        title: '中台用户管理',
        meta: {
            name: '用户管理'
        }
    },
    {
        name: 'centeRoleManage',
        path: '/center/role/manage',
        title: '中台角色权限管理',
        meta: {
            name: '角色权限管理'
        }
    },
    {
        name: 'frontUserManage',
        path: '/front/user/manage',
        title: '前台用户管理',
        meta: {
            name: '用户管理'
        }
    },
    {
        name: 'frontRoleManage',
        path: '/front/role/manage',
        title: '前台角色权限管理',
        meta: {
            name: '角色权限管理'
        }
    },
    {
        name: 'frontScenesList',
        path: '/front/scenes/list',
        title: '场景管理',
        meta: {
            name: '场景管理'
        }
    },
    {
        name: 'siteList',
        path: '/site/list',
        title: '站点列表',
        meta: {
            name: '站点列表'
        }
    },
    {
        name: 'siteImport',
        path: '/site/import',
        title: '批量导入',
        meta: {
            name: '批量导入'
        }
    },
    {
        name: 'siteOrganization',
        path: '/site/organization',
        title: '组织用户',
        meta: {
            name: '组织用户',
            parentPath: '/site/list'
        }
    },
    {
        name: 'siteService',
        path: '/site/service',
        title: '服务配置',
        meta: {
            name: '服务配置',
            parentPath: '/site/list'
        }
    },
    {
        name: 'contentIndex',
        path: '/content/index',
        title: '内容管理',
        meta: {
            name: '内容管理'
        }
    },
    {
        name: 'feedback',
        path: '/feedback',
        title: '用户反馈',
        meta: {
            name: '用户反馈'
        }
    }
];

/**
 * 转换为大写
 * @param {String} char 
 * @returns 
 */
 function toUpperCase(char) {
    return char.toUpperCase();
}

/**
 * 获取加工后的路由表
 * @param {Array} arr 
 * @returns 
 */
function genRouteList(arr) {
    return arr.map(item => {
        let obj = deepCopy(item);
        let name = obj.component || obj.name;
        let component = pages[name && name.replace(/^[a-z]/, toUpperCase)] || pages['404'];
        obj.meta = obj.meta || {}
        if(!obj.meta.title) {
            obj.meta.title = item.title;
        }
        if(obj.children) {
            obj.children = genRouteList(obj.children);
        }
        return {
            ...obj,
            component,
            path: `${PREFIX}${item.path}`
        };
    });
}
const routes = genRouteList(options);
console.log('routes = ', routes);
export default routes;

